package cn.iocoder.yudao.module.infra.service.ocr;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.infra.controller.admin.ocr.vo.record.OcrRecordPageReqVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.ocr.OcrRecordDO;

/**
 * OCR Record Service Interface
 *
 * @author YuDao
 */
public interface OcrRecordService {

    /**
     * Create OCR record
     *
     * @param record OCR record
     * @return Record ID
     */
    Long createOcrRecord(OcrRecordDO record);

    /**
     * Update OCR record
     *
     * @param record OCR record
     */
    void updateOcrRecord(OcrRecordDO record);

    /**
     * Delete OCR record
     *
     * @param id Record ID
     */
    void deleteOcrRecord(Long id);

    /**
     * Get OCR record by ID
     *
     * @param id Record ID
     * @return OCR record
     */
    OcrRecordDO getOcrRecord(Long id);

    /**
     * Get OCR record by file ID
     *
     * @param fileId File ID
     * @return OCR record
     */
    OcrRecordDO getOcrRecordByFileId(Long fileId);

    /**
     * Get OCR record page
     *
     * @param pageReqVO Page request
     * @return OCR record page
     */
    PageResult<OcrRecordDO> getOcrRecordPage(OcrRecordPageReqVO pageReqVO);

    /**
     * Delete OCR records by IDs
     *
     * @param ids Record IDs
     */
    void deleteOcrRecordList(java.util.List<Long> ids);

}